//package com.group.app.example.es;
//
//import com.alibaba.fastjson.JSONArray;
//import org.elasticsearch.action.search.SearchResponse;
//import org.elasticsearch.index.query.BoolQueryBuilder;
//import org.elasticsearch.index.query.QueryBuilder;
//import org.elasticsearch.search.builder.SearchSourceBuilder;
//import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
//
//import java.util.List;
//
//public interface ElasticsearchHandler {
//    /**
//     * 批量更新插入文档
//     * @param index 索引
//     * @param docs 文档集合
//     * @param id 文档标识符
//     * @return
//     */
//    boolean upserDocuments(String index, JSONArray docs, String id);
//
//    /**
//     * 批量更新文档
//     * @param index
//     * @param docs
//     * @param id
//     * @return
//     */
//    boolean updateDocument(String index, JSONArray docs, String id);
//
//    /**
//     * 批量删除文档
//     * @param index 索引
//     * @param id 文档标识
//     * @return
//     */
//    boolean deleteDocuments(String index, List<String> id);
//
//    /**
//     * 删除索引
//     * @param index
//     * @return
//     */
//    boolean deleteDocument(String index, String id);
//
//    /**
//     * 删除索引
//     * @param index
//     * @return
//     */
//    boolean deleteIndex(String index);
//
//    /**
//     * 构建SearchSourceBuilder
//     * @param size 结果集大小
//     * @param from 查询起始位置
//     * @return
//     */
//    SearchSourceBuilder getSourceBuilder(int size, int from);
//
//    /**
//     * 构建SearchSourceBuilder
//     * @param size 结果集大小
//     */
//    SearchSourceBuilder getSourceBuilder(int size);
//
//    /**
//     *
//     * @param beginDate
//     * @param endDate
//     * @param channel
//     * @param business
//     * @return
//     */
//    BoolQueryBuilder getQueryBuilder(String beginDate, String endDate, List<String> channel, List<String> business);
//
//    /**
//     * 根据参数构建 HighlightBuilder
//     */
//    HighlightBuilder getHighlightBuilder(List<String> fieldList);
//
//    /**
//     * 根据参数构建请求，返回响应数据
//     * @param index 索引名
//     * @param sourceBuilder 资源构造器
//     * @return
//     */
//    SearchResponse getSearchResponse(String index, SearchSourceBuilder sourceBuilder);
//
//    /**
//     * 根据参数构建请求，返回响应数据
//     * @param index 索引名
//     * @param sourceBuilder 资源构造器
//     * @param queryBuilder  查询构造器
//     * @return
//     */
//    SearchResponse getSearchResponse(String index, SearchSourceBuilder sourceBuilder, QueryBuilder queryBuilder);
//
//
//    /**
//     *
//     * @param index
//     * @param sourceBuilder
//     * @param queryBuilder
//     * @param highlightBuilder 高亮构造器
//     * @return
//     */
//    SearchResponse getSearchResponse(String index, SearchSourceBuilder sourceBuilder, QueryBuilder queryBuilder, HighlightBuilder highlightBuilder);
//
//    /**
//     *
//     * @param index
//     * @param sourceBuilder
//     * @param queryBuilder
//     * @param highlightBuilder
//     * @param includeList 返回字段列表
//     * @param excludeList 不返回字段列表
//     * @return
//     */
//    SearchResponse getSearchResponse(String index,
//                                     SearchSourceBuilder sourceBuilder,
//                                     QueryBuilder queryBuilder,
//                                     HighlightBuilder highlightBuilder,
//                                     List<String> includeList,
//                                     List<String> excludeList);
//
//    BoolQueryBuilder getQueryBuilderByKeyword(String beginDate, String endDate, List<String> channel, List<String> business, String keyword);
//
//}
